/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufjf.pos.model.dao;

import br.ufjf.pos.model.Dentista;
import br.ufjf.pos.model.Faturamento;
import br.ufjf.pos.util.GenericDao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author cleber
 */
public class FaturamentoDAO extends GenericDao<Faturamento, Integer>{

    @Override
    public void inserir(Faturamento obj) throws SQLException, ClassNotFoundException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void alterar(Faturamento obj) throws SQLException, ClassNotFoundException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void apagar(Faturamento obj) throws SQLException, ClassNotFoundException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Faturamento pesquisaChave(Integer obj) throws SQLException, ClassNotFoundException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public ArrayList<Faturamento> buscarTodos() throws SQLException, ClassNotFoundException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public ArrayList<Faturamento> pesquisaProcedimentosAtendimentosMesAtual() throws SQLException, ClassNotFoundException {
        String sql = " SELECT tbfuncionario.DFid_funcionario, tbfuncionario.DFnome, SUM(DFvalor_cobrado) AS DFvalor "
                     + " FROM tbatendimento "
               + " INNER JOIN tbprocedimento_atendimento"
                       + " ON tbprocedimento_atendimento.DFid_atendimento = tbatendimento.DFid_atendimento"
               + " INNER JOIN TBfuncionario"
                       + " ON tbfuncionario.DFid_funcionario = tbatendimento.DFid_dentista"
                    + " WHERE MONTH(tbatendimento.dfdata_hora) = MONTH (now())"
                      + " AND YEAR(tbatendimento.dfdata_hora) = YEAR (now())"
                 + " GROUP BY tbfuncionario.DFid_funcionario  ";
        ArrayList<String> lista = new ArrayList<String>();

        ArrayList<Faturamento> listaFaturamento = new ArrayList<Faturamento>();
        
        ResultSet rs = executasql(sql, lista);
        while(rs.next()){  
            Dentista dentista = new Dentista(rs.getInt("DFid_funcionario"), rs.getString("DFnome"));
            Faturamento faturamento = new Faturamento(dentista,rs.getFloat("DFvalor"));
            listaFaturamento.add(faturamento);            
        }   
        return listaFaturamento;
    }

    public ArrayList<Faturamento> pesquisaProcedimentosAtendimentosMesAtualDentista(int idDentista) throws SQLException, ClassNotFoundException {
        String sql = " SELECT tbfuncionario.DFid_funcionario, tbfuncionario.DFnome, SUM(DFvalor_cobrado) AS DFvalor "
                     + " FROM tbatendimento "
               + " INNER JOIN tbprocedimento_atendimento"
                       + " ON tbprocedimento_atendimento.DFid_atendimento = tbatendimento.DFid_atendimento"
               + " INNER JOIN TBfuncionario"
                       + " ON tbfuncionario.DFid_funcionario = tbatendimento.DFid_dentista"
                    + " WHERE tbfuncionario.DFid_funcionario = ? "
                      + " AND MONTH(tbatendimento.dfdata_hora) = MONTH (now()) "
                      + " AND YEAR(tbatendimento.dfdata_hora)  = YEAR (now())"
                 + " GROUP BY tbfuncionario.DFid_funcionario  ";
        ArrayList<String> lista = new ArrayList<String>();

        lista.add(idDentista +"");
        
        ArrayList<Faturamento> listaFaturamento = new ArrayList<Faturamento>();
        
        ResultSet rs = executasql(sql, lista);
        while(rs.next()){  
            Dentista dentista = new Dentista(rs.getInt("DFid_funcionario"), rs.getString("DFnome"));
            Faturamento faturamento = new Faturamento(dentista,rs.getFloat("DFvalor"));
            listaFaturamento.add(faturamento);            
        }   
        return listaFaturamento;
    }    
}
